package view.Professeurs;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.Border;

import Controller.*;
import Model.Etudiant;

import view.Fenetre;
import view.Param;

@SuppressWarnings("serial")
public class ReceivePanel extends JPanel implements ActionListener {

	private ArrayList<JCheckBox> liste;
	private ArrayList<Etudiant> etudiants;
	private JButton bIns, bDeny;

	public ReceivePanel() {

		// Alignement vertical des conteneurs
		this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));

		// Creation du titre du panel
		JLabel lTitre = new JLabel("DEMANDES D'INSCRIPTION");
		JPanel pButtons = new JPanel();
		bIns = new JButton("Inscrire");
		bDeny = new JButton("Refuser");
		liste = new ArrayList<JCheckBox> ();
		etudiants = new ArrayList<Etudiant> ();

		// Ajout des boutons au panneau pButtons
		pButtons.add(bIns);
		pButtons.add(bDeny);

		// Ajout de la transparence
		this.setOpaque(false);
		pButtons.setOpaque(false);

		// Ajout des couleurs
		lTitre.setForeground(Param.fontColor);

		// Ajout du titre
		this.add(lTitre);


		ProfesseurController pr = Fenetre.control.getProfesseurController();
		etudiants = pr.demandeEtudiant();


		// Creation de la liste des etudiants
		for (Etudiant etud:etudiants) {

			JCheckBox etudiant = new JCheckBox(etud.getNom() + " " + etud.getPrenom());

			etudiant.setOpaque(false);
			etudiant.setForeground(Param.fontColor);

			liste.add(etudiant);
			this.add(etudiant);

		}

		// Ajout du panneau pButtons
		this.add(pButtons);

		// Ajout des marges
		this.setBorder(Param.wideMargin);
		Border margin = BorderFactory.createEmptyBorder(0, 0, 10, 0);		// top, left, bottom, right
		lTitre.setBorder(margin);
		margin = BorderFactory.createEmptyBorder(20, 0, 0, 0);				// top, left, bottom, right
		pButtons.setBorder(margin);

		// Ajout des ecouteurs aux boutons
		bIns.addActionListener(this);
		bDeny.addActionListener(this);

	}

	@Override
	public void actionPerformed(ActionEvent event) {

		ArrayList<Etudiant> listeAChanger = new  ArrayList<Etudiant>();
		boolean update = false;
		int cpt = 0;
		for (int i=0; i<liste.size(); i++) {


			JCheckBox box = liste.get(i);

			if (box.isSelected()) {
				liste.remove(box);
				this.remove(box);
				update = true;
				listeAChanger.add(this.etudiants.get(cpt));	
				i--;
			}

			if (liste.isEmpty()) {
				bIns.setEnabled(false);
				bDeny.setEnabled(false);
			}

			this.validate();
			cpt++;
		}

		if (event.getSource() == bIns) {
			if (update) {
				for(int i =0 ; i<listeAChanger.size();i++)
					listeAChanger.get(i).validerInscription();
				String message = "Les \u00E9tudiants ont \u00E9t\u00E9 inscrits.";
				JOptionPane.showMessageDialog(null, message, "Inscription des \u00E9tudiants", JOptionPane.INFORMATION_MESSAGE);
				update = false;
			}
		}
		else if (event.getSource() == bDeny) {
			if (update) {

				for(int i =0 ; i<listeAChanger.size();i++)
					listeAChanger.get(i).supprimer();
				String message = "Les \u00E9tudiants ont \u00E9t\u00E9 refus\u00E9s.";
				JOptionPane.showMessageDialog(null, message, "Suppression des \u00E9tudiants", JOptionPane.INFORMATION_MESSAGE);
				update = false;
			}
		}

	}

}
